
import axios from "axios";
import cookies from "@/utils/util.cookies";
import { apiWxUserInfo } from "@/axios/api";

/* ******************************************************
 *
 * 这里应该是针对普通的微信的, 目前不一定用得上
 * 这里应该是针对普通的微信的, 目前不一定用得上
 * 这里应该是针对普通的微信的, 目前不一定用得上
 * 这里应该是针对普通的微信的, 目前不一定用得上
 * 这里应该是针对普通的微信的, 目前不一定用得上
 * 这里应该是针对普通的微信的, 目前不一定用得上
 * 这里应该是针对普通的微信的, 目前不一定用得上
 * 这里应该是针对普通的微信的, 目前不一定用得上
 *
 * *****************************************************/
export default {
	namespaced: true,
	state: {
		userId    : '',
		userName  : '',
		userAvatar: '',
		unionid   : '',
		balance   : 0,
		userInfo : {}
	},

	getters: {
		//是否登录
		isLogin(state){
			return state.unionid ? true : false
		}
	},

	mutations: {

		// 设置用户信息
		SET_USERINFO(state,data){
			// 注意，要先在state里设置好变量，才是响应式的，页面上才能自动响应更新
			state.userId     = data.uid
			state.userName   = data.wxnickname
			state.unionid    = data.wxunionid
			state.userAvatar = data.wxheadimgurl
		},

		// 退出清空
		CLEAR_USERINFO(state) {
			state.userId     = ''
			state.userName   = ''
			state.unionid    = ''
			state.userAvatar = ''
			state.userInfo = {}
			console.log('清空了user的state:',state)
		}
	},

	actions:{

		// 获取用户登录信息
		userLoginInfo({ commit, state, getters,dispatch }) {
			return new Promise((resolve,reject) => {
				// 如果没有用户信息，向服务器请求用户信息
				if (getters.isLogin  == false) { //如果没有登录才读取用户信息
					apiWxUserInfo({"unionid": state.unionid || ''}).then(res => {
						if(res.code == 0){
							commit('SET_USERINFO', res.data)
							dispatch('userVisitRecord') //首次登录记录一下
							console.log('主动读取用户信息',res.data)
						}else{
							console.log('主动读取用户信息失败，状态码：',res.code)
						}
						setTimeout(() => {
							resolve() //有请求到数据，改变padding状态
						}, 100);
					}).catch(e => {
						resolve() //即使没有请求到用户信息，也应该改变padding状态
					})
				} else {
					console.log('已登录，不重复请求用户信息')
					resolve() // store中有用户信息，则改变padding状态
				}
			})
		},

		// 退出登录
		userExitLogin( { commit } ) {
			console.log('退出登录，并清除相关数据');
			// 清空store里的数据
			commit('CLEAR_USERINFO') //清除用户令牌
			commit('cart/clartCart',{},{root:true}) //清除购物车缓存
			//清理cookies
			// 由于cookies工具的remove删除兼容有问题，只能用于localhost的
			// 当线上使用www或没有www访问生成的cookies的域会不一样，导致不能删除
			// 下面使用原生方法强制删除在线域名的cookies
			cookies.remove('unionid')
			document.cookie = 'unionid=;expires='+(new Date(1))+';domain=zmanbox.com;path=/';
			document.cookie = 'unionid=;expires='+(new Date(1))+';domain=www.zmanbox.com;path=/';
			console.log('删除了unionid')
		},

		

	}
}
